package game.leon.engine.script.exec;

import game.leon.engine.utils.LinkedNode;

import java.util.ArrayList;
import java.util.List;

import static game.leon.engine.script.exec.OpCode.*;

/**
 * 虚拟机, 定义一个标准在这里
 * 提供寄存器, 堆栈等体系支持
 *
 * 1. 静态编译, 减少动态内容
 * 2. 指令基于寄存器(因为寄存器的比基于栈的性能高太多了), 寄存器数量必须大于指令操作数
 * User: BianP
 * Date: 12-2-3
 *
 * notes: 12-02-24
 * 1. 做成一个全局的内存, 指令区域, 按照图灵机来做吧, 简单些
 * 2. 动态加载, 动态link
 *
 */
public class LeonVM {
    public static final int VERSION = 17;
    public static final int REGISTER_COUNT = 16;     // r1, r2, r3, ... rN
    // 寄存器
    private Var[] registers;
    // 运行环境, 就不用栈了, 太危险, 且容易出错
    private List<Frame> frames = new ArrayList<Frame>();
    public LeonVM() {
        registers = new Var[REGISTER_COUNT];
    }
    public void exec(Chunk chunk) {

    }
}
